
//
//  WBEmoticonTool.swift
//  微博(swift)
//
//  Created by 汤米 on 16/4/25.
//  Copyright © 2016年 汤米. All rights reserved.
//

import UIKit

// MARK: -  显示的最大列数
let WBEmoticonMaxColum = 7

// MARK: -  显示的最大行数
let WBEmoticonMaxRaw = 3

// MARK: -  一个cell里面最多显示的表情个数
let WBEmoticonMaxCount = 20

class WBEmoticonTool: NSObject {

    // MARK: -  全局访问点
    static let sharedTools: WBEmoticonTool = WBEmoticonTool()
    
    // MARK: -  三维表情数组
    lazy var allEmoticons: [[[WBEmoticonModel]]] = {
        
        
        return [
            
            self.getEmoticonGroup(self.defaultEmoticon),
            self.getEmoticonGroup(self.emojiEmoticon),
            self.getEmoticonGroup(self.flowerEmoticon)
        ]
    }()
    
    // MARK: -  一维数组截取成二维数组
    func getEmoticonGroup(emoticon: [WBEmoticonModel]) -> [[WBEmoticonModel]] {
        
        //计算有多少页
        var pageNumber = 0
        if emoticon.count % WBEmoticonMaxCount == 0 {
            
            pageNumber = emoticon.count / WBEmoticonMaxCount
        }else {
            pageNumber = (emoticon.count / WBEmoticonMaxCount) + 1
        }
        
        var tempArray: [[WBEmoticonModel]] = [[WBEmoticonModel]]()
        
        for index in 0..<pageNumber {
            
            let locale = index * WBEmoticonMaxCount
            var length = WBEmoticonMaxCount
            
            if locale + length > emoticon.count {
                
                length = emoticon.count - locale
            }
            
            let range = NSMakeRange(locale, length)
            
            //截取数组
            let emotions = (emoticon as NSArray).subarrayWithRange(range) as! [WBEmoticonModel]
            
            tempArray.append(emotions)
        }
        
        return tempArray
    }
    
    // MARK: -  默认表情
    lazy var defaultEmoticon: [WBEmoticonModel] = {
        
        
        return self.getEmoticonArray("default/")
    }()
    
    // MARK: -  emoji表情
    lazy var emojiEmoticon: [WBEmoticonModel] = {
        
        return self.getEmoticonArray("emoji/")
    }()
    
    // MARK: -  浪小花
    lazy var flowerEmoticon: [WBEmoticonModel] = {
       
        return self.getEmoticonArray("lxh/")
    }()
    
    
    // MARK: -  获取表情模型一维数组
    func getEmoticonArray(pathString: String) -> [WBEmoticonModel] {
        
        let path = emoticonBundle.pathForResource("\(pathString)info.plist", ofType: nil)!
        let array = NSArray(contentsOfFile: path)!
        
        //临时数组
        var tempArray: [WBEmoticonModel] = [WBEmoticonModel]()
        for dict in array {
            
            let emoticonModel = WBEmoticonModel(dict: dict as! [String: AnyObject])
            emoticonModel.path = pathString
            tempArray.append(emoticonModel)
        }
        
        return tempArray
    }
    
    // MARK: -  懒加载bundle
    lazy var emoticonBundle: NSBundle = {
       
       let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        return NSBundle(path: path)!
    }()
    
    
    
    // MARK: -  供外界调用  判断外界传入的chs是否和emotion的相同  相同的话返回对应模型
    func getEmoticonWithChs(chs: String) -> WBEmoticonModel? {
        
        for emoticon in defaultEmoticon {
            
            if emoticon.chs == chs{
                return emoticon
            }
        }

        
        for emoticon in flowerEmoticon {
            
            if emoticon.chs == chs{
                return emoticon
            }
        }

        
        return nil
    }
}
